Backpropagation 梯度推导 台湾国立大学应用深度学习
Backpropagation 算法推导
本文是NTU陈蕴侬教授,应用深度学习课程反向传播算法推导的笔记。原文在:200310_Backprop.pdf
1. 全连接神经网络的公式
如图所示,全连接前馈神经网络,实现了
先定义一些参数:
具体来说, 先看最后一层关系——从a到z,如上图。而从z到a:如下图
注意z到a的中间加了激活函数。这里也会产生一个梯度,
全连接神经网络的前向过程。
对神经网络的梯度下降算法及记号。
前向与后向传播比较:
- 在前馈神经网络中
- 前向
- 信息流向从输入x到输出y
- 在训练中,前向传播能持续知道产生标量
- 反向
- 允许信息从损失反向流过整个网络,放在计算完整的梯度
- 适合任何函数
- 前向
看这里,红色所示到底代表损失函数对单一权重
具体推导:
这里就等于
其实,就是关于
- 当层数大于1,等于对应的前一层激活函数的输出a
- 当层数为1时, 等于对应的训练的输入input x
总结一下,激活函数输出z对权重的梯度,如下。
现在只要求
其中,引入个残差符号
先计算l层的梯度,因为激活函数输入z,发生
而
而
放在整个网络中看,就是损失函数对第
那么轻松简化成下图中.
回想下梯度传播原理,就是每层梯度等于激活函数在
写成矩阵形式就是如下
总体来看整个网络中,损失函数对权重的梯度等于损失函数对
反向传播中,激活函数输入z对权重的梯度,分为1层网络和大于1层两种情况,分别如下
反向传播中每层激活函数处梯度,
优化中的梯度下降
总结:
计算损失函数关于权重的梯度基于从前向和反向传播中的两个提前计算量:
- 前向传播中
等于,第l层激活函数在 处梯度与 权重w和下一层 的 Hadamard积(如果是最后一层就是损失函数对z的梯度) - 前向传播中, 激活函数输出或输入x
而这个梯度就等于上述两者相乘。(本质上是,这个神经元的输入和对应梯度的乘积,而梯度等于方向导数下降的最快方向)